home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2006 February / Gamestar_81_2006-02_dvd.iso / Red Shark / Common / GameMachine.script < prev    next >
Text File  |  2001-12-20  |  7KB  |  296 lines

  1. //-------------------------------------------------------------------
  2. //
  3. //  This code is copyright 2001 by G5 Software.
  4. //  Any unauthorized usage, either in part or in whole of this code
  5. //  is strictly prohibited. Violators WILL be prosecuted to the
  6. //  maximum extent allowed by law.
  7. //
  8. //-------------------------------------------------------------------
  9.  
  10. class CGameMachine extends CStrings
  11. {
  12.   color ConsoleStartColor = color(0.3, 0.3, 0.3, 1.0);
  13.   color ConsoleLoadColor  = color(0.3, 0.3, 0.3, 0.0);
  14.   color ConsoleGameColor  = color(0.3, 0.3, 0.3, 0.75);
  15.  
  16.   void CGameMachine()
  17.   {
  18.     // load text rendering component
  19.     LoadTextRender("CFonts");
  20.  
  21.     // SetConsoleState(Enabled, ScreenAreaPersent, BackColor)
  22.     SetConsoleState(true, 100, ConsoleStartColor);
  23.  
  24.     // InitMainCamera(CameraClass) camera automaticaly activated
  25.     InitMainCamera("CMainGameCamera");
  26.  
  27.     // Create music controller
  28.     CreateMusicController("CMusicController");
  29.  
  30.     // InitMainListener(???)
  31.     InitMainListener();
  32.  
  33.     // Load game menu
  34.     CreateGameMenu("CGameMenu");
  35.  
  36.     // Load mission menu
  37.     CreateMissionMenu("CMissionMenu");
  38.  
  39.     // Hide console after everything's loaded
  40.     SetConsoleState(false, 50, ConsoleGameColor);
  41.  
  42.     // Disable all controls just for a case
  43.     EnableControl("", false);
  44.  
  45.     // Enable game menu control
  46.     EnableControl(SOID_GameMenu, true);
  47.  
  48.     // Start menu music playing
  49.     Core_SendEventTo(SOID_MusicController, "PlayMenuMusic");
  50.   }
  51.  
  52.   bool m_bMissionLoaded = false;
  53.  
  54.   void OnShowMissionMenu()
  55.   {
  56.     if (!m_bMissionLoaded)
  57.       return;
  58.  
  59.     Core_SendEventTo(SOID_MissionController, "OnShowMissionMenu");
  60.   }
  61.  
  62.   void OnForceMissionMenu()
  63.   {
  64.     if (!m_bMissionLoaded)
  65.       return;
  66.  
  67.     Core_SendEventTo(SOID_MissionController, "OnForceMissionMenu");
  68.   }
  69.  
  70.   void OnShowMissionStatus()
  71.   {
  72.     if (!m_bMissionLoaded)
  73.       return;
  74.  
  75.     Core_SendEventTo(SOID_MissionController, "OnShowMissionStatus");
  76.   }
  77.  
  78.   void OnShowMissionHelpScreen()
  79.   {
  80.     if (!m_bMissionLoaded)
  81.       return;
  82.  
  83.     Core_SendEventTo(SOID_MissionController, "OnShowMissionHelpScreen");
  84.   }
  85.  
  86.   void OnQuitGame()
  87.   {
  88.     QuitGame();
  89.   }
  90.  
  91.   // loaded mission name,
  92.   // saved for 'restart' button
  93.   string m_strCurrentMission;
  94.  
  95.   // loaded mission number,
  96.   // saved for open new mission functionality
  97.   int    m_nCurrentMissionNumber;
  98.  
  99.   void OnLoadMission(
  100.       string _MissionName,
  101.       int    _MissionNumber
  102.     )
  103.   {
  104.     m_strCurrentMission = _MissionName;
  105.     m_nCurrentMissionNumber = _MissionNumber;
  106.  
  107.     // configure game menu to show load screen while loading
  108.     Core_CallFunction(
  109.       SOID_GameMenu,
  110.       "GoToSubMenu",
  111.       "GameMenu_LoadScreen"
  112.     );
  113.     // turn off mouse cursor while loading
  114.     Core_CallFunction(
  115.       SOID_GameMenu,
  116.       "HideCursor"
  117.     );
  118.  
  119.     SetConsoleState(false, 100, ConsoleLoadColor);
  120.  
  121.     EnableControl("", false); // Disable all
  122.     ActivateCamera("", false); // Disable all
  123.  
  124.     EnableControl(SOID_GameMenu, true);
  125.     ActivateCamera(SOID_MainCamera, true);
  126.  
  127.     LoadMission(_MissionName);
  128.  
  129.     // turn on mouse cursor for menu
  130.     Core_CallFunction(
  131.         SOID_GameMenu,
  132.         "ShowCursor"
  133.       );
  134.  
  135.     EnableControl("", false); // Disable all
  136.     ActivateCamera("", false); // Disable all
  137.  
  138.     SetConsoleState(false, 50, ConsoleGameColor);
  139.  
  140.     Core_PostEventTo(
  141.         SOID_GameController,
  142.         "SwitchControlToHelicopter"
  143.       );
  144.  
  145.     m_bMissionLoaded = true;
  146.   }
  147.  
  148.   void SwitchControlToHelicopter()
  149.   {
  150.     ActivateObject("Helicopter", true); // enable for helicopter
  151.   }
  152.  
  153.   // which missions open which
  154.   array m_MissionOpens =
  155.     array(
  156.       array(1, 2),
  157.       array(3, 5),
  158.       array(4, 6),
  159.       array(8),
  160.       array(10),
  161.       array(7),
  162.       array(11),
  163.       array(9),
  164.       array(14),
  165.       array(),
  166.       array(13),
  167.       array(12),
  168.       array(),
  169.       array(),
  170.       array()
  171.     );
  172.  
  173.   void OnSetMissionResult(
  174.            array  _objectives,
  175.            array  _statuses,
  176.            array  _bonus_objectives,
  177.            array  _bonus_statuses,
  178.            string _statistics
  179.          )
  180.   {
  181.     // analyze whether mission is completed and enable the next mission
  182.     // button on the play! menu
  183.  
  184.     // mission is complete if all the main objectives are complete
  185.     bool bMissionComplete = true;
  186.     for (int i = 0; i < _statuses.size(); i = i + 1)
  187.     {
  188.       bMissionComplete = bMissionComplete && (_statuses[i] == str_ObjectiveComplete);
  189.     }
  190.  
  191.     //
  192.     // prepare mission results screen
  193.     //
  194.  
  195.     Core_SendEventTo(SOID_GameMenu,
  196.        "BaseMenu_SetMissionStatus",
  197.        _objectives,
  198.        _statuses,
  199.        _bonus_objectives,
  200.        _bonus_statuses,
  201.        _statistics,
  202.        false,           // in-game flag, notifies that mission is over
  203.                         // and menu should display 'Failed' but not 'In progress'
  204.                         // for incomplete objectives
  205.        bMissionComplete // flag showing whether mission is complete
  206.     );
  207.  
  208.     if (bMissionComplete)
  209.     {
  210.       int cur_state = GetMissionState(m_nCurrentMissionNumber);
  211.  
  212.       // mission medal
  213.  
  214.       int level = Core_CallFunction(
  215.                     SOID_GameMenu,
  216.                     "GetDifficultyLevel"
  217.                   );
  218.  
  219.       if (cur_state < level + 2)
  220.         cur_state = level + 2;
  221.  
  222.       SetMissionState(m_nCurrentMissionNumber, cur_state);
  223.  
  224.       // open missions
  225.  
  226.       array Missions2Open = m_MissionOpens[m_nCurrentMissionNumber];
  227.  
  228.       for (int i = 0; i < Missions2Open.size(); i = i + 1)
  229.       {
  230.         int state = GetMissionState(Missions2Open[i]);
  231.         if (state == 0)
  232.           state = 1;
  233.         SetMissionState(Missions2Open[i], state);
  234.       }
  235.     }
  236.   }
  237.  
  238.   void OnQuitMission()
  239.   {
  240.     // Start menu music playing
  241.     Core_SendEventTo(SOID_MusicController, "PlayMenuMusic");
  242.  
  243.     EnableControl("", false); // Disable all
  244.     ActivateCamera("", false); // Disable all
  245.  
  246.     m_bMissionLoaded = false;
  247.  
  248.     UnloadMission();
  249.  
  250.     ActivateCamera(SOID_MainCamera, true);
  251.  
  252.     Core_CallFunction(SOID_GameMenu,
  253.        "GoToSubMenu",
  254.        "BaseMenu_ShowMissionStatus");
  255.  
  256.     EnableControl(SOID_GameMenu, true);
  257.   }
  258.  
  259.   void OnRestartMission()
  260.   {
  261.     // Start menu music playing
  262.     Core_SendEventTo(SOID_MusicController, "PlayMenuMusic");
  263.  
  264.     EnableControl("", false); // Disable all
  265.     ActivateCamera("", false); // Disable all
  266.  
  267.     m_bMissionLoaded = false;
  268.  
  269.     UnloadMission();
  270.  
  271.     ActivateCamera(SOID_MainCamera, true);
  272.  
  273.     // load mission
  274.     Core_SendEventTo(SOID_GameController, "OnLoadMission", m_strCurrentMission, m_nCurrentMissionNumber);
  275.   }
  276. }
  277.  
  278. class CMainGameCamera
  279. {
  280.   float FOV        = 1.0;
  281.  
  282.   float RectLeft   = 0;
  283.   float RectTop    = 0;
  284.   float RectRight  = 1.0;
  285.   float RectBottom = 1.0;
  286.  
  287.   float ZMin       = 0.0;
  288.   float ZMax       = 1.0;
  289.   float ZNear      = 1.0;
  290.   float ZFar       = 1000.0;
  291.  
  292.   float Priority   = 0;
  293. }
  294.  
  295.  
  296.